#include <iostream>
#include <cstring>
#include "nlohmann/json.hpp"

//
// Created by ashCheng on 2022/11/14.
//
using json = nlohmann::json;

typedef struct Request
{
  std::string key; //键值
  /*这里包含需要定义额值*/
  uint32_t value;//这里用一个int的value代替
  uint64_t create_time; //创建时间
}Value;

typedef std::map<std::string key, Value> MyCache;
MyCache my_cache;

/*设置缓存时间, 设置为5分钟*/
uint64_t expire_time = 300;

int QueryMyCache(const std::string& key, Value& value)
{
  if (key.empty())
    return -1;

  auto cache_iter = my_cache.find(key);
  if (cache_iter != my_cache.end())/*缓存里面存在值*/
  {
    const Value& value_t = cache_iter->second;
    /*判断缓存是否已过期*/
    if ((time(NULL)-value_t.create_time)<expire_time)
    {   /*未过期则返回值*/
      SetValue(value_t, value);
      return 0;
    }
  }
  /*已过期或不存在缓存中,通过DB去查询需要的Value*/
  if (0 != QueryDB(key, value))
  {
    /*DB查询失效*/
    return -2;
  }
  /*设置时间，并放入存储*/
  value.create_time = time(NULL);
  my_cache[key] = value;
  return 0;
}

int main() {

}